/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DB;
import Data.*;
import java.rmi.RemoteException;
import java.util.Vector;
import java.util.Date;

/**
 *
 * @author tosca
 */
public class MapperMethodTester {

    public static void main (String[] args){

        try{

            /*//AIRPORT
        //wird nicht mit new instantiiert, da die methode .airportMapper kontrolliert ob schon eine instanz vorhanden ist.
        AirportMapper airportMapper = AirportMapper.getInstance();*/

        /*Airport a = new AirportImpl("COL", "CologneAirport", "Köln","Deutschland");
        Airport update = new AirportImpl("MUC","Franz Josef Strauß", "Munich","Deutschland");
        Airport bestimmterAirport;


        //update methode aufrufen
        airportMapper.update(update);*/
        //insert mehtode aufrufen
        /*a = airportMapper.insert(a);
        if(a == null){
            System.out.println("internationalId evtl. schon vorhanden");
        }
        else{
            System.out.println("erfolgt!");
        }*/
        /*//delete methode aufrufen
        //airportMapper.delete(insert);
        //findAll airports aufrufen
       Vector<Airport> alleAirports = new Vector<Airport>();
        alleAirports = airportMapper.findAll();
        for(int i =0; i<alleAirports.size();i++){
            System.out.println(alleAirports.get(i).getInternationalId() + " "+alleAirports.get(i).getPortName()+" "+alleAirports.get(i).getPortCity()+" "+alleAirports.get(i).getPortCountry());

        }

        //einen bestimmten Flughafen abhängig vom Name ausgeben
        bestimmterAirport = airportMapper.findByName("Pearson Airport");
            System.out.println(bestimmterAirport.getInternationalId()+" "+bestimmterAirport.getPortName()+" "+ bestimmterAirport.getPortCity()+" "+ bestimmterAirport.getPortCountry());

            System.out.println("hat funktioniert");

        //einen bestimmten Flughafen abhängig vom Name ausgeben
        bestimmterAirport = airportMapper.findByInternationalId("MUC");
            System.out.println(bestimmterAirport.getInternationalId()+" "+bestimmterAirport.getPortName()+" "+ bestimmterAirport.getPortCity()+" "+ bestimmterAirport.getPortCountry());

            System.out.println("hat funktioniert");
         */


            //Passenger

//            PassengerMapper passengerMapper = PassengerMapper.getInstance();
//
//            Vector<Passenger> p = passengerMapper.findAllPassengersFromKtoO();
//
//            if(p.size()==0){
//                System.out.println("keine passagiere vorhanden");
//            }
//            else{
//                for(int i=0; i<p.size(); i++){
//                    System.out.println(p.get(i).getLastName());
//                }
//            }
            
            /*Passenger p = new PassengerImpl("fabi","hoh","kirchweg5",30440,"berlin");

            p = passengerMapper.insert(p);
            System.out.println(p.getPassengerId()+" "+p.getFirstName()+" "+p.getLastName()+" "+p.getStreet()+" "+p.getPostcode()+" "+p.getCity());*/
            
            //update methode des passengers anwenden
            /*Passenger updatePassenger = new PassengerImpl("stan","felle","rosensteinweg43",70198,"stuttgart");
            updatePassenger.setPassengerId(1);
            passengerMapper.update(updatePassenger);
            System.out.println("update erfolgt!");*/

            //delete methode des passengerMappers aufrufen
            /*Passenger p = new PassengerImpl("flo","härer","rosenweg5",70188,"ostfildern");
            p.setPassengerId(3);
            passengerMapper.delete(p);
            System.out.println("passenger gelöscht!");*/

            //findAll passengers
            /*Vector<Passenger> allPassengers = new Vector<Passenger>();
            allPassengers = passengerMapper.findAll();

            for(int i =0; i< allPassengers.size();i++){
                System.out.println(allPassengers.get(i).getPassengerId()+" "+allPassengers.get(i).getFirstName()+" "+allPassengers.get(i).getLastName()+" "+allPassengers.get(i).getStreet()+" "+allPassengers.get(i).getPostcode()+" "+allPassengers.get(i).getCity());
            }*/

            //find passengerByName
            /*Vector<Passenger> allPassengers = passengerMapper.findByName("fabi","hoh");
            if(allPassengers.isEmpty()){
                System.out.println("Kein Passagier mit dem angegebenen Namen!");
            }
            else{
                for (int i =0;i<allPassengers.size();i++){

                    System.out.println(allPassengers.get(i).getPassengerId()+" "+allPassengers.get(i).getFirstName()+" "+allPassengers.get(i).getLastName()+" "+allPassengers.get(i).getStreet()+" "+allPassengers.get(i).getPostcode()+" "+allPassengers.get(i).getCity());
                }
            }*/

            //passengerById finden

            /*Passenger p = passengerMapper.findById(4);
            if(p == null){
                System.out.println("passagier mit übergebener ID ist nicht vorhanden");
            }
            else{
            System.out.println(p.getPassengerId()+" "+p.getFirstName()+" "+p.getLastName()+" "+p.getStreet()+" "+p.getPostcode()+" "+p.getCity());
            }*/



            //Airline

            AirlineMapper airlineMapper = AirlineMapper.getInstance();

            /*Airline a = new AirlineImpl("Air Canada");
            a = airlineMapper.insert(a);
            if(a == null){
                System.out.println("airline name schon vorhanden!");
            }
            else{
            System.out.println(a.getAirId()+" "+a.getAirName());
            }*/
            //airline updaten
            /*a.setAirId(5);
            a = airlineMapper.update(a);
            if(a == null){
                System.out.println("update nicht möglich, da namen schon vorhanden");
            }
            else{
            System.out.println("Update erfolgt!");
            }*/
            /*//eine airline löschen
            Airline a = new AirlineImpl("German Wings");
            a.setAirId(2);
            airlineMapper.delete(a);
            System.out.println("airline gelöscht");*/

            //alle airlines aus der tabelle ausgeben
            /*Vector<Airline> allAirlines = airlineMapper.findAll();
            if(allAirlines.isEmpty()){
                System.out.println("keine Airline vorhanden");
            }
            else{
            for(int i=0; i<allAirlines.size(); i++){

                System.out.println(allAirlines.get(i).getAirId()+" "+allAirlines.get(i).getAirName());
            }
            }*/

            //airline objekt abhängig vom NAmen finden
            /*Airline a = airlineMapper.findByName("American Airlines");
            if(a == null){
                System.out.println("Airline nicht vorhanden!");
            }
            else{
                System.out.println(a.getAirId()+" "+a.getAirName());
            }*/

            //airline objekt abhängig von der ID zurückgeben
            /*Airline a = airlineMapper.findById(7);
            if(a == null){
                System.out.println("airline nicht vorhanden!");
            }
            else{
                System.out.println(a.getAirId()+" "+a.getAirName());
            }*/




            //Aircraft

            AircraftMapper aircraftMapper = AircraftMapper.getInstance();

//            int craftId = aircraftMapper.findAircraftIdByRealizationId(2);
//            System.out.println(craftId);
            Date date = new Date(System.currentTimeMillis());
            System.out.println("aktuelles datum: "+date.toString());
////

           Vector<Aircraft> availableAircraft = aircraftMapper.findAircraftsByAvailability(date, date, 1);

           if(availableAircraft == null){
               System.out.println("keine verfügbar!");
           }
           else{

               for(int i=0; i<availableAircraft.size(); i++){

               System.out.println("AircraftID: "+availableAircraft.get(i).getCraftId());
           }
           }
            
           
            //insert
              Aircraft craft = new AircraftImpl("LH34234", 1, 1);
               /*
            craft = aircraftMapper.insert(craft);
            if(craft == null){
                System.out.println("insert fehlgeschlagen");
            }
            else{
                System.out.println("insert erfolgt");
            }
             */
            
            //update

            /*craft.setCraftName("AA6669");
            craft.setAirlineId(2);
            craft.setTypeOfAircraftId(2);
            craft = aircraftMapper.update(craft);
            if(craft == null){
                System.out.println("update nicht möglich!");
            }
            else{

            System.out.println("update erfolgt!");
            }*/

            //delete
            /*aircraftMapper.delete(craft);
            System.out.println("delete erfolgt!");*/

            //findAll
            /*Vector<Aircraft> allAircrafts = aircraftMapper.findAll();
            if(allAircrafts == null){
                System.out.println("entweder keine vorhanden oder fehlgeschlagen");
            }
            else{
                for(int i=0; i<allAircrafts.size();i++){
                    System.out.println(allAircrafts.get(i).getCraftId()+" "+allAircrafts.get(i).getCraftName()+" "+allAircrafts.get(i).getAirlineId()+" "+allAircrafts.get(i).getTypeOfAircraftId());
                }
            }*/

            //findByName
            /*craft = aircraftMapper.findByName("LH7000");
            if(craft==null){
                System.out.println("keines vorhanden oder fehler");
            }
            else{
                System.out.println( craft.getCraftId()+" "+craft.getCraftName()+" " +craft.getAirlineId()+" "+craft.getTypeOfAircraftId());
            }*/

            //findById
            /*craft = aircraftMapper.findById(2);
            if(craft==null){
                System.out.println("keines vorhanden oder fehler");
            }
            else{
                System.out.println( craft.getCraftId()+" "+craft.getCraftName()+" " +craft.getAirlineId()+" "+craft.getTypeOfAircraftId());
            }*/

            //delete aircrafts with airlineId
            /*aircraftMapper.deleteAllAircraftsWithAirlineId(2);
            System.out.println("gelöscht!");*/

            //delete aircrafts mit typeId
            /*aircraftMapper.deleteAllAircraftsWithTypeOfAircraftId(1);
            System.out.println("gelöscht!");*/

            //finden nach TypeId
            /*Vector<Aircraft> allAircrafts = aircraftMapper.findByTypeOfAircraftId(2);
            if(allAircrafts == null){
                System.out.println("keine da oder fehler!");
            }
            else{
                for(int i=0; i<allAircrafts.size();i++){
                System.out.println(allAircrafts.get(i).getCraftId()+" "+allAircrafts.get(i).getCraftName()+" "+allAircrafts.get(i).getAirlineId()+" "+allAircrafts.get(i).getTypeOfAircraftId());
                }
            }*/

            //getAirlineOfAircraft
            /*Airline a = aircraftMapper.getAirlineOfAircraft(craft);
            System.out.println(a.getAirId()+" "+a.getAirName()+" ");

            //TypeOfAircraft
            TypeOfAircraftMapper typeOfAircraftMapper = TypeOfAircraftMapper.getInstance();*/

            /*Seat seat = new SeatImpl(8,50);
            seat.setSeatId(9);

            TypeOfAircraft type = new TypeOfAircraftImpl("Boing 800");
            type.setCraftTypeId(5);*/
            /*type = typeOfAircraftMapper.insert(type, seat);
            if(type == null){
                System.out.println("name schon vorhanden");
            }
            else{
            System.out.println(type.getCraftTypeId()+" "+type.getCratTypeName());
            }
            TypeOfAircraft type = new TypeOfAircraftImpl("LuftJet 222");
            type.setCraftTypeId(1);*/
            /*type = typeOfAircraftMapper.update(type, seat);
            if(type == null){
                System.out.println("update nich möglich, da namen schon vorhanden ist");
            }
            else{
            System.out.println(type.getCraftTypeId()+" "+type.getCratTypeName()+" ");
            }/*
            //Type löschen
            /*TypeOfAircraft type = new TypeOfAircraftImpl("LuftJet 222");
            type.setCraftTypeId(1);
            typeOfAircraftMapper.delete(type);
            System.out.println("wurde gelöscht!");*/

            //alle Types finden
            /*Vector<TypeOfAircraft> types = typeOfAircraftMapper.findAll();
            if(types == null){
                System.out.println("keine types vorhanden");
            }
            else{
                for(int i=0; i<types.size();i++)
                System.out.println(types.get(i).getCraftTypeId()+" "+types.get(i).getCratTypeName());
            }*/

            //einen bestimmten aircraftTyp finden
            /*TypeOfAircraft type2 = typeOfAircraftMapper.findById(1);
            if(type2 == null){
                System.out.println("kein type of aircraft mit gegebener ID vorhanden!");
            }
            else{
               System.out.println(type2.getCraftTypeId()+" "+type2.getCratTypeName()+" "+type2.getNumberOfAllSeatsOfRelatedSeatStructure()+" "+type2.getNumberOfRowsOfRelatedSeatStructure()+" "+type2.getSeatsPerRowOfRelatedSeatStructure());
            }*/
            //einen aircraftType abhängig vom namen finden
            /*type.setCraftTypeId(3);
            type = typeOfAircraftMapper.findByName("Boing 444");
            if(type == null){
                System.out.println("kein type vorhanden");
            }
            else{
                System.out.println(type.getCraftTypeId()+" "+ type.getCratTypeName()+" "+type.getNumberOfAllSeatsOfRelatedSeatStructure()+" "+ type.getNumberOfRowsOfRelatedSeatStructure()+" "+ type.getSeatsPerRowOfRelatedSeatStructure());
            }*/

            //SEAT
            SeatMapper seatMapper = SeatMapper.getInstance();

            /*Seat seat = new SeatImpl(8,80);
            seat.setSeatId(567);*/
            //insert
            /*seat = seatMapper.insert(seat);
            System.out.println("sitz ist in der DB gespeichert! bitte in DB überprüfen");*/
            //delete
            /*seat.setSeatId(2);
            seatMapper.delete(seat);
            System.out.println("sitz gelöscht");*/

            //prüfen, ob sitzstruktur in einem type verbaut ist
            /*boolean isVerbaut = seatMapper.isSeatUsedInAnyTypeOfAircraft(seat);
            System.out.println(isVerbaut);*/
            

            //seatstructure updaten
            /*Seat seat = new SeatImpl(15,200);
            seat.setSeatId(1);
            seatMapper.update(seat);
            System.out.println("seat structure wurde upgedatet");*/

            //alle sitze ausgeben
            /*Vector<Seat> allSeats = seatMapper.findAll();
            if(allSeats == null){
                System.out.println("keine sitzstrukturen vorhanden");
            }
            else{
                for(int i=0; i<allSeats.size();i++)
                System.out.println(allSeats.get(i).getSeatId());
            }*/

            //seat mit bestimmter ID finden
            /*Seat seat = seatMapper.findById(1);
            System.out.println(seat.getSeatId()+" "+seat.getNumberOfAllSeats()+" "+seat.getNumberOfRows()+" "+ seat.getNumberOfRowsForBusinessclass()+" "+seat.getNumberOfRowsForEconomyclass());*/

            //eine sitzplatzstruktur mit bestimmter gesamtanzahl von sitzen finden
            /*Vector<Seat> allSeats = seatMapper.findByNumberOfAllSeats(540);
            if(allSeats == null){
                System.out.println("keine sitzstruktur mit der eingegebenen gesamtanzahl vorhanden!");
            }
            else{
                for(int i =0; i<allSeats.size(); i++){
                System.out.println(allSeats.get(i).getSeatId()+" "+allSeats.get(i).getSeatsPerRow()+" "+allSeats.get(i).getShareOfRowsForEconomyclass());
                }
            */



            //Flight

            FlightMapper flightMapper = FlightMapper.getInstance();

//            int flightID = flightMapper.findFlightIdByRealizationId(2);
//            System.out.println(flightID);


//            Flight flight = new FlightImpl("11:11:00","Montag","12:12:00","Montag", "LAX", "COL", 4);
//            flight.setFlightId(3);
//
//            flightMapper.update(flight);
//            System.out.println("erfolgreich!");
            /*
            //flug insert
            flight = flightMapper.insert(flight);
            System.out.println("flight eingefügt!");
            flightMapper.deleteAllFlightsWithAirportId("COL");*/

            //FlightRealization
            /*FlightRealizationMapper flightrMapper = FlightRealizationMapper.getInstance();
            int numberOfAllSeats = flightrMapper.getNumberOfAllSeats(2);
            System.out.println("Gesamtsitzeanzahl: "+numberOfAllSeats);*/




            //Booking
//            BookingMapper bookingMapper = BookingMapper.getInstance();
//
//            Vector<Booking> allBookings = bookingMapper.findAllByAlreadyCheckedInAndSpecificFlightRealization(1);
//
//            if(allBookings == null){
//                System.out.println("keine booking vorhanden!");
//            }
//            else{
//                for(int i =0; i<allBookings.size(); i++){
//                    System.out.println("BookingID: "+allBookings.get(i).getBookingId()+" "+allBookings.get(i).getCheckInDate());
//                }
//            }
//
//            Vector<Booking> b = bookingMapper.findAllByAlreadyCheckedIn();
//
//            if(b==null){
//                System.out.println("gibt keine eingecheckten bookings!");
//            }
//
//            else{
//                for (int i =0; i<b.size(); i++){
//
//                    System.out.println(b.get(i).getBookingId());
//
//                }
//            }

            //delete all bookings From specific passenger
            /*bookingMapper.deleteAllBookingsFromPassenger(1);


            Date heute = new Date(System.currentTimeMillis());
            

            Booking b = new BookingImpl("Firstclass",1,1);
            b.setBookingId(1);
            b.setCheckInDate(heute);
            b.setSeatPosition("A1");

            //insert
            b = bookingMapper.insert(b);
            if(b == null){
                System.out.println("insert fehlgeschlagen");
            }
            else{
                System.out.println("booking eingefügt!");
            }

            //checkIn durchführen
            boolean erfolgreich = bookingMapper.executeCheckInForSpecificBooking(b);
            System.out.println("erfolgreich? "+erfolgreich);*/


            /*Vector<Booking> allBookings = bookingMapper.findAll();
            if(allBookings == null){
                System.out.println("keine bookings vorhanden");
            }
            else{
                for(int i=0; i<allBookings.size();i++){
                    System.out.println(allBookings.get(i).getBookingId()+" "+allBookings.get(i).getCheckInDate()+" "+allBookings.get(i).getSeatPosition()+" "+allBookings.get(i).getSeatingArea()+" "+allBookings.get(i).getPassengerId()+" "+allBookings.get(i).getRealizationId()+" ");
                }
            }*/

//            Booking b = bookingMapper.findById(1);
//            System.out.println(b.getBookingId()+" "+b.getSeatingArea());


//            Vector<Booking> allBookings = bookingMapper.findAllByAlreadyCheckedIn();
//            if(allBookings == null){
//                System.out.println("keine bookings vorhanden, bei denen der passagier eingecheckt hat");
//            }
//            else{
//                for(int i=0; i<allBookings.size();i++){
//                    System.out.println(allBookings.get(i).getBookingId()+" "+allBookings.get(i).getCheckInDate()+" "+allBookings.get(i).getSeatPosition()+" "+allBookings.get(i).getSeatingArea()+" "+allBookings.get(i).getPassengerId()+" "+allBookings.get(i).getRealizationId()+" ");
//                }
//            }

            /*boolean eingeckeckt = bookingMapper.verifyCheckInStatusOfBooking(4);
            System.out.println("eingecheckt? "+eingeckeckt);*/

            /*boolean successful = bookingMapper.executeCheckInForSpecificBooking(b);
            System.out.println("erfolgreich? "+successful);*/

            /*int anzahl = bookingMapper.findNumberOfBookingsForRealizationId(2);
            System.out.println("anzahl: "+anzahl);*/

            FlightRealizationMapper flightRMapper = FlightRealizationMapper.getInstance();
            /*int anzahl = flightRMapper.getNumberOfAllSeats(3);
            System.out.println("anzahl: " +anzahl);*/
            /*int anzahlSItzeProReihe = flightRMapper.getNumberOfSeatsPerRow(1);
            System.out.println("anzahl: "+ anzahlSItzeProReihe);*/

            /*int anzahlReihen = flightRMapper.getNumberOfRows(1);
            System.out.println("anzhalREihen: "+anzahlReihen);*/
            /*int pointerR = flightRMapper.getPointerR(2);
            System.out.println("pointer: "+pointerR);*/

            //flightRMapper.setPointerSpR(2, 1);
            //flightRMapper.setPointerR(2, 8);
//            Date departureDate = new Date(123456789);
//            Date arrivalDate    = new Date(123456789);
//            FlightRealization flightR = new FlightRealizationImpl(departureDate, arrivalDate, 1, 1);
//
//            flightR = flightRMapper.insert(flightR);
//            System.out.println("erfolgreich");

            /*FlightRealization flightR2 = flightRMapper.findById(1);
            System.out.println(flightR2.getDateOfDeparture()+" "+flightR2.getDateOfArrival());*/


        }


        catch(RemoteException ex){
            ex.printStackTrace();
        }

    }

}
